package com.prj.ufdm.web.util;

import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSONObject;

/**
 * Description: 用户微服务调用类
 * @author   
 * @date 2019年8月21日
 */
@Service
public class AuthRestTemplateUtil {
	
	@Autowired
	RestTemplateUtil restTemplateUtil;
	
	/**
	 * Description: 用户微服务POST参数调用
	 * @param url 
	 * @param paramMap 参数
	 * @param headMap  头信息
	 * @param clazz
	 * @return 对象
	 * @author 
	 * @date 2019年8月21日
	 * @version 1.0
	 */
	public <T> T doAuthParamPostForObject(String url,Map<String,String> paramMap,Map<String,String> headMap, Class<T> clazz) {
		ResponseEntity<JSONObject> responseJson = restTemplateUtil.doParamPostForJSONobject(url,paramMap,headMap);
        // 无返回值
        if(responseJson.getBody()==null || responseJson.getBody().getJSONObject("retHead")==null || responseJson.getBody().getJSONObject("retBody")==null) {
        	return null;
        }
        T objT = JSONObject.parseObject(responseJson.getBody().getJSONObject("retBody").toJSONString(),clazz);
		return objT;
	}
	
	/**
	 * Description: 用户微服务POST参数调用
	 * @param url 
	 * @param paramMap 参数
	 * @param headMap  头信息
	 * @param clazz
	 * @return 返回List对象
	 * @author 
	 * @date 2019年8月21日
	 * @version 1.0
	 */
    public <T> List<T> doAuthParamPostForList(String url,Map<String,String> paramMap,Map<String,String> headMap, Class<T> clazz) {
    	ResponseEntity<JSONObject> responseJson = restTemplateUtil.doParamPostForJSONobject(url,paramMap,headMap);
        // 无返回值
        if(responseJson.getBody()==null || responseJson.getBody().getJSONObject("retHead")==null || responseJson.getBody().getJSONArray("retBody")==null) {
        	return null;
        }
        List<T> listT =	JSONObject.parseArray(responseJson.getBody().getJSONArray("retBody").toJSONString(),clazz);
		return listT;
	}
    
    
}
